home *** CD-ROM | disk | FTP | other *** search
- /*
- * FM_SysInfoReq_React.c
- *
- * Requester for sysinfo-request with reaction-support
- * $VER: V2.0, 13.10.2001
- * Coded by Edgar Schwan
- */
-
- #include <intuition/gadgetclass.h>
- #include <intuition/classusr.h>
- #include <intuition/screens.h>
- #include <classes/window.h>
- #include <dos/dos.h>
- #include <gadgets/string.h>
-
- #include <clib/intuition_protos.h>
- #include <clib/exec_protos.h>
- #include <clib/graphics_protos.h>
- #include <clib/alib_protos.h>
-
- #include <pragmas/intuition_pragmas.h>
- #include <pragmas/exec_pragmas.h>
- #include <pragmas/graphics_pragmas.h>
-
- #include <stdlib.h>
- #include <stdio.h>
-
- #include "FM_SysInfoReq_React.h"
- #include "FM_ReactionBasics.h"
- #include "FM_Reaction.h"
- #include "FM_ReactionCD.h"
-
- extern ULONG *PALETTE;
-
- extern TEXT CPU68K_STR;
- extern TEXT FPU68K_STR;
- extern TEXT CPUPPC_STR;
- extern TEXT FPUPPC_STR;
-
- struct ReactWinData *sysinfo_rwd = NULL;
-
- /* Do_SysInfoRequest(): sysinfo-requester (full handling).
-
- SYNOPSIS: void = Do_SysInfoRequest
- (
- struct Window *Win;
- char *PubScreenName;
- WORD Left;
- WORD Top;
- );
-
- INPUTS: Win:
- Pointer to the parent-window.
-
- PubScreenName:
- name of the public-screen, where the window should appear.
-
- Left:
- Left edge of palette-window.
-
- Top:
- Top edge of palette-window.
-
- RETURNS: -
- */
-
- void Do_SysInfoRequest(struct Window *Win, char *PubScreenName, WORD Left, WORD Top)
- {
- LONG result = RESULT_NOTHING;
- ULONG waitsigs, mask;
-
- if (OpenSysInfoReqWindow(PubScreenName) == TRUE) {
- waitsigs = sysinfo_rwd->RWD_WSignals|SIGBREAKF_CTRL_C;
-
- while(result == RESULT_NOTHING) {
- mask = Wait(waitsigs);
- #ifndef NDEBUG
- printf("mask: %lX\n", mask);
- #endif /*NDEBUG*/
- if (mask & sysinfo_rwd->RWD_WSignals) {
- result = HandleSysInfoReqWindow(Win);
- }
- if (mask & SIGBREAKF_CTRL_C) {
- result = RESULT_CANCEL;
- }
- }
-
- CloseSysInfoReqWindow();
- } else DisplayError(Win, TXT_ERR_Window, 5L);
-
- LoadRGB32(ViewPortAddress (Win), (APTR) PALETTE);
- }
-
- /* OpenSysInfoReqWindow(): open window of sysinfo-requester.
-
- SYNOPSIS: BOOL res = OpenSysInfoReqWindow
- (
- char *PubScreenName;
- );
-
- INPUTS: PubScreenName:
- name of the public-screen, where the window should appear.
-
- RETURNS: res:
- TRUE, if successfull.
- */
-
- BOOL OpenSysInfoReqWindow(char *PubScreenName)
- {
- if (sysinfo_rwd = OpenReactionWindow(WIN_SYSI_ID, GROUP_SysI_ID, PubScreenName)) {
- ULONG chip = AvailMem(MEMF_CHIP);
- ULONG fast = AvailMem(MEMF_FAST);
- ULONG largestchip = AvailMem(MEMF_CHIP|MEMF_LARGEST);
- ULONG largestfast = AvailMem(MEMF_FAST|MEMF_LARGEST);
- char buffer[20];
-
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_68kCPU], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &CPU68K_STR, TAG_DONE);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_68kFPU], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &FPU68K_STR, TAG_DONE);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_PPCCPU], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &CPUPPC_STR, TAG_DONE);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_PPCFPU], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &FPUPPC_STR, TAG_DONE);
- sprintf((char *) &buffer, "%ld", chip);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_AvailChip], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &buffer, TAG_DONE);
- sprintf((char *) &buffer, "%ld", fast);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_AvailFast], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &buffer, TAG_DONE);
- sprintf((char *) &buffer, "%ld", largestchip);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_LargestChip], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &buffer, TAG_DONE);
- sprintf((char *) &buffer, "%ld", largestfast);
- SetGadgetAttrs(sysinfo_rwd->RWD_GadgetArray[SysI_STRING_LargestFast], sysinfo_rwd->RWD_IWindow, NULL,
- STRINGA_TextVal, &buffer, TAG_DONE);
- return(TRUE);
- }
- return(FALSE);
- }
-
- /* CloseSysInfoReqWindow(): close window of sysinfo-requester.
-
- SYNOPSIS: void = CloseSysInfoReqWindow
- (
- void
- );
-
- INPUTS: -
-
- RETURNS: -
- */
-
- void CloseSysInfoReqWindow(void)
- {
- CloseReactionWindow(sysinfo_rwd);
- }
-
- /* HandleSysInfoReqWindow(): Handle the messages of the sysinfo-requester.
-
- SYNOPSIS: LONG res = HandlePalettePrefWindow
- (
- struct Window *Win;
- );
-
- INPUTS: Win:
- Pointer to a window-structure.
-
- RETURNS: res:
- result of messages: RESULT_NOTHING -> nothing happens.
- RESULT_CANCEL -> user wants to quit without a change.
- RESULT_OK -> accept changes and quit.
- */
-
- LONG HandleSysInfoReqWindow(struct Window *Win)
- {
- LONG rc = RESULT_NOTHING;
- ULONG result, code;
-
- while((result = DoMethod(sysinfo_rwd->RWD_WindowObject, WM_HANDLEINPUT, &code)) != WMHI_LASTMSG) {
-
- #ifndef NDEBUG
- printf("result: %ld\n", result);
- #endif /*NDEBUG*/
-
- switch (result & WMHI_CLASSMASK) {
- case WMHI_CLOSEWINDOW:
- rc = RESULT_CANCEL;
- break;
-
- case WMHI_GADGETUP:
- switch (result & RL_GADGETMASK) {
- case SysI_BUTTON_OK:
- rc = RESULT_OK;
- break;
- #ifndef NDEBUG
- default:
- printf("unknown result: %lX\nunknown gadget: %lX\n", result, result & WMHI_GADGETMASK);
- DisplayBeep(NULL);
- break;
- #endif /*NDEBUG*/
- }
- break;
-
- case WMHI_ICONIFY:
- DoMethod(sysinfo_rwd->RWD_WindowObject, WM_ICONIFY);
- GetAttr(WINDOW_Window, sysinfo_rwd->RWD_WindowObject, (ULONG *) &sysinfo_rwd->RWD_IWindow);
- break;
-
- case WMHI_UNICONIFY:
- DoMethod(sysinfo_rwd->RWD_WindowObject, WM_OPEN);
- GetAttr(WINDOW_Window, sysinfo_rwd->RWD_WindowObject, (ULONG *) &sysinfo_rwd->RWD_IWindow);
- break;
- #ifndef NDEBUG
- default:
- printf("unknown result: %lX\nunknown class: %lX\n", result, result & WMHI_CLASSMASK);
- DisplayBeep(NULL);
- break;
- #endif /*NDEBUG*/
- }
- }
- return(rc);
- }
-